Ptr afpAttnRoutine; /*routine pointer in AFP login */
UInt8 ccbFill[144]; /*CCB memory allocated for driver Login needs only 150 bytes BUT CCB really starts in the middle of AFPSCBPtr and also clobbers AFPAttnRoutine. */
};
typedef struct AFPLoginPrm AFPLoginPrm;
struct XCallParam {
QElem * qLink;
short qType;
short ioTrap;
Ptr ioCmdAddr;
XPPCompletionUPP ioCompletion;
OSErr ioResult;
long cmdResult;
short ioVRefNum;
short ioRefNum;
short csCode;
short xppSubCode;
UInt8 xppTimeout; /*retry interval (seconds)*/
UInt8 xppRetry; /*retry count*/
short filler1;
Ptr zipBuffPtr; /*pointer to buffer (must be 578 bytes)*/
short zipNumZones; /*no. of zone names in this response*/
UInt8 zipLastFlag; /*non-zero if no more zones*/
UInt8 filler2; /*filler*/
UInt8 zipInfoField[70]; /*on initial call, set first word to zero*/
};
typedef struct XCallParam XCallParam;
union XPPParamBlock {
XPPPrmBlk XPP;
ASPGetparmsBlk GETPARM;
ASPAbortPrm ABORT;
ASPOpenPrm OPEN;
AFPLoginPrm LOGIN;
XCallParam XCALL;
};
struct ATPparms {
QElem * qLink; /*next queue entry*/
short qType; /*queue type*/
short ioTrap; /*routine trap*/
Ptr ioCmdAddr; /*routine address*/
ATPCompletionUPP ioCompletion; /*ATPCompletionUPP or MPPCompletionUPP*/
OSErr ioResult; /*result code*/
long userData; /*Command result (ATP user bytes)*/
short reqTID; /*request transaction ID*/
short ioRefNum; /*driver reference number*/
short csCode; /*Call command code*/
UInt8 atpSocket; /*currbitmap for requests or ATP socket number*/